{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import igraph as ig\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 构建二分有向图\n",
    "g = ig.Graph(\n",
    "    9,\n",
    "    [(0, 4), (0, 5), (1, 4), (1, 6), (1, 7), (2, 5), (2, 7), (2, 8), (3, 6), (3, 7)],\n",
    "    directed=True\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 节点0-3在一侧, 4-8在另一侧\n",
    "g.vs[range(4)][\"type\"] = True\n",
    "g.vs[range(4, 9)][\"type\"] = False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Size of maximum matching (maxflow) is: 4.0\n"
     ]
    }
   ],
   "source": [
    "# 添加一个源(顶点9)和一个汇(顶点10)\n",
    "g.add_vertices(2)\n",
    "g.add_edges([(9, 0), (9, 1), (9, 2), (9, 3)])  # connect source to one side\n",
    "g.add_edges([(4, 10), (5, 10), (6, 10), (7, 10), (8, 10)])  # ... and sinks to the other\n",
    "\n",
    "flow = g.maxflow(9, 10)\n",
    "print(\"Size of maximum matching (maxflow) is:\", flow.value)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Size of maximum matching (maximum_bipartite_matching) is: 4\n"
     ]
    }
   ],
   "source": [
    "# 删除source和sink, 比较一下输出\n",
    "g2 = g.copy()\n",
    "g2.delete_vertices([9, 10])\n",
    "matching = g2.maximum_bipartite_matching()\n",
    "matching_size = sum(1 for i in range(4) if matching.is_matched(i))\n",
    "print(\"Size of maximum matching (maximum_bipartite_matching) is:\", matching_size)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 添加匹配来显示原始图, 手动绘制了源和汇\n",
    "layout = g.layout_bipartite()\n",
    "layout[9] = (2, -1)\n",
    "layout[10] = (2, 2)\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "ig.plot(\n",
    "    g,\n",
    "    target=ax,\n",
    "    layout=layout,\n",
    "    vertex_size=0.4,\n",
    "    vertex_label=range(g.vcount()),\n",
    "    vertex_color=[\"lightblue\" if i < 9 else \"orange\" for i in range(11)],\n",
    "    edge_width=[1.0 + flow.flow[i] for i in range(g.ecount())]\n",
    ")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.10.6 ('py310')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "49ec5068d4d6d3736c39d3918a16f1ca551a23384109b69898c01c2015d1370c"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
